package org.okcjug.december.queue;

import java.util.PriorityQueue;
import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;

import junit.framework.TestCase;

public class MyQueueTest extends TestCase
{

	public void testQueue_string()
	{
		Queue<String> myQueue = new PriorityQueue<String>(3); // not thread safe.  use PriorityBlockingQueue
		
		System.err.println(myQueue.add("3"));
		System.err.println(myQueue.add("4"));
		System.err.println(myQueue.add("5"));
		System.err.println(myQueue.add("1")); 
		System.err.println(myQueue.add("2"));
		System.err.println(myQueue.add("6"));
		System.err.println(myQueue.add("7"));
		System.err.println(myQueue.add("8"));
		System.err.println(myQueue.add("9"));
		System.err.println(myQueue.add("A"));
		System.err.println(myQueue.add("B"));
		System.err.println(myQueue.add("C"));
		System.err.println(myQueue.add("D"));
		System.err.println(myQueue.add("E"));
		
		System.err.println(myQueue);

		System.err.println("poll: " + myQueue.poll());

		System.err.println(myQueue);
	
	}

//	public void testQueue_movie()
//	{
//		PriorityBlockingQueue<Movie> myQueue = new PriorityBlockingQueue<Movie>(2); // thread safe
//		
//		myQueue.add(MovieFactory.getDrStrangelove());
//		myQueue.add(MovieFactory.getClerks());
//		myQueue.add(MovieFactory.getHolyGrail());
//		myQueue.add(MovieFactory.getTheJerk());
//		myQueue.add(MovieFactory.getMysteryMen());
//		
//		System.err.println(myQueue.size());
//		System.err.println("poll: " + myQueue.poll());
//		System.err.println(myQueue.size());
//		
//		PriorityBlockingQueue<Movie> newQueue = new PriorityBlockingQueue<Movie>();
//		myQueue.drainTo(newQueue, 3);
//		
//		System.err.println(myQueue.size() + "  " + newQueue.size());
//		
//		try {
//			System.err.println(newQueue.take());
//		} catch (InterruptedException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//	}
	
	public void testArrayBlockingQueue()
	{
		ArrayBlockingQueue<String> abq = new ArrayBlockingQueue<String>(4);
		abq.add("a1");
		abq.add("a2");
		abq.add("a3");
		abq.add("a4");
		abq.add("a5");
		
		
		
	}
}
